import { useClipboard } from '@vueuse/core';
import { $t } from '@/locales';

/**
 * 格式化日期
 *
 * @param date 日期对象
 * @param formatStr 格式化字符串，默认为 'YYYY-MM-DD'
 * @param timeZone 时区，默认为 'UTC'
 * @returns 格式化后的日期字符串
 */
export const formatDate = (
  date: Date,
  formatStr: string = 'YYYY-MM-DD',
  timeZone: string = 'UTC'
): string => {
  if (!date) return $t('common.none');
  const padZero = (num: number): string => num.toString().padStart(2, '0');
  const localDate = date.toLocaleString('en-US', { timeZone });
  const parsedDate = new Date(localDate);

  const year = parsedDate.getFullYear();
  const month = padZero(parsedDate.getMonth() + 1); // 注意月份是从 0 开始的
  const day = padZero(parsedDate.getDate());
  const hour = padZero(parsedDate.getHours());
  const minute = padZero(parsedDate.getMinutes());
  const second = padZero(parsedDate.getSeconds());

  return formatStr
    .replace(/YYYY/g, year.toString())
    .replace(/MM/g, month)
    .replace(/DD/g, day)
    .replace(/HH/g, hour)
    .replace(/mm/g, minute)
    .replace(/ss/g, second);
};

/**
 * 角色权限控制
 *
 * @param role 角色
 * @param code 权限码
 */
export const isPermission = (role?: string, code: string = '9999') => {
  return true;
  // switch (code) {
  //   //所有权限
  //   case '0000':
  //     return true;
  //   // 编辑
  //   case '0001':
  //     return role === 'admin' || role === 'user';
  //   // 删除
  //   case '0002':
  //     return role === 'admin' || role === 'user';
  //   // 新增
  //   case '0003':
  //     return role === 'admin' || role === 'user';
  //   // 否定
  //   case '9999':
  //     return false
  //   default:

  //     return false
  // }
};

export const handleCopy = async (text: string) => {
  const { copy, isSupported } = useClipboard();

  if (!isSupported) {
    window.$message?.error('您的浏览器不支持Clipboard API');
    return;
  }

  if (!text) {
    window.$message?.error('复制的内容不能为空');
    return;
  }

  await copy(text);
  // 不知道为什么，在@click调用上面的执行了，但是没有复制成功，所以这里再调用一次
  navigator.clipboard.writeText(text);
  window.$message?.success(`复制成功：${text}`);
};
